CCFLAGS=-W -V -I -ansi -Md -c
LDFLAGS=-M -m -d -s

kernel.img : main.o kernel.o mem_asm.o mem.o dataseg_asm.o div_asm.o interrupt_asm.o jump_asm.o console.o syscall_asm.o syscall.o sector_asm.o sectors.o file_handler.o exec.o timer.o timer_handler.o ident.o
	ld86 $(LDFLAGS) -o $@ $^

main.o : main.c
	bcc $(CCFLAGS) -o $@ $<

kernel.o : kernel.c types.h interrupt.h console.h sectors.h mem.h syscall.h const.h
	bcc $(CCFLAGS) -o $@ $<

mem_asm.o : mem_asm.s
	as86 -o $@ $<
	
mem.o : mem.c mem.h types.h
	bcc $(CCFLAGS) -o $@ $<

dataseg_asm.o : dataseg_asm.s
	as86 -o $@ $<

div_asm.o : div_asm.s
	as86 -o $@ $<

interrupt_asm.o : interrupt_asm.s
	as86 -o $@ $<

jump_asm.o : jump_asm.s
	as86 -o $@ $<

console.o : console.c console.h const.h math.h
	bcc $(CCFLAGS) -o $@ $<

syscall_asm.o : syscall_asm.s
	as86 -o $@ $<

syscall.o : syscall.c syscall.h types.h
	bcc $(CCFLAGS) -o $@ $<
	
sector_asm.o : sector_asm.s
	as86 -o $@ $<
	
sectors.o : sectors.c sectors.h const.h types.h
	bcc $(CCFLAGS) -o $@ $<
	
file_handler.o : file_handler.c file_handler.h const.h sectors.h console.h mem.h math.h types.h
	bcc $(CCFLAGS) -o $@ $<

ident.o : ident.c ident.h const.h types.h
	bcc $(CCFLAGS) -o $@ $<
	
exec.o: exec.c exec.h types.h interrupt.h console.h sectors.h mem.h
	bcc $(CCFLAGS) -o $@ $<
	
timer.o: timer_asm.s timer.h
	as86 -o $@ $<
	
timer_handler.o: timer_handler.c timer_handler.h
	bcc $(CCFLAGS) -o $@ $<

clean:
	/bin/rm -f *.o *.img *~
